package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/company")
public class CompanyController {

    /**
     * 注入dubbo的服务代理对象
     * com.alibaba.dubbo.config.annotation.Reference;
     */
    @Reference
    private CompanyService companyService;

    /**
     * 查询企业列表
     * http://localhost:8080/company/list
     */
    @RequestMapping("/list")
    public String list(Model model){
        // 调用service查询
        List<Company> list = companyService.findAll();
        // 存储查询结果
        model.addAttribute("list",list);//request.setAttribute("list",list);
        // 默认转发: /WEB-INF/pages/company/company-list.jsp
        return "company/company-list";
    }

    /**
     * 进入添加页面
     * 功能入口：企业列表，点击“新建”
     * 请求地址：http://localhost:8080/company/toAdd.do
     * 响应地址：/WEB-INF/pages/company/company-add.jsp
     */
    @RequestMapping("/toAdd")
    public String toAdd(Model model){
        return "company/company-add";
    }

    /**
     * 添加/
     */
    @RequestMapping("/edit")
    public String edit(Company company){
        // 判断
        if (StringUtils.isEmpty(company.getId())) {
            // 主键id为空，说明是添加
            companyService.save(company);
        } else {
            // 主键id不为空，修改
            companyService.update(company);
        }

        // 添加成功后，重定向到列表（列表重新查询数据再显示）
        return "redirect:/company/list";
    }

    /**
     * 进入修改页面
     * 功能入口：列表页面点击·编辑·
     * 请求地址：http://localhost:8080/company/toUpdate.do
     * 请求参数：id  表示要修改的记录的主键
     * 响应地址：/WEB-INF/pages/company/company-update.jsp
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id,Model model){
        // 根据id查询，并保存
        Company company = companyService.findById(id);
        model.addAttribute("company",company);
        return "company/company-update";
    }

    /**
     * 删除
     * 功能入口：列表页面点击·删除·
     * 请求地址：http://localhost:8080/company/delete.do
     * 请求参数：id  表示要修改的记录的主键
     * 响应地址：重定向到列表
     */
    @RequestMapping("/delete")
    public String delete(String id){
        companyService.delete(id);
        return "redirect:/company/list";
    }

}
